/////precompiled////////
#include "precompiled.h"
////////////////////////


#include "svl_TEvents.h"
using namespace svl;
                      
// TEvents /////////////////////////////////////////////////////////////////////

//
TEvents::TI::TI(TEventsList &V) : i(V.list) 
{ 
  i.Bot();
}
    
//
TEvents *TEvents::TI::GetPrev()
{
  return i.Prev() ? &((TEventsItem*)i.GetObject())->Events : NULL;

  //if (!eventsItem) { return NULL;}
  //TEventsItem *EventsItemPrev = (TEventsItem*)eventsItem->GetPrev();
  //if (!EventsItemPrev) { return NULL;}
  //
  //EventsItemPrev->Events.eventsItem = EventsItemPrev;
  //return &EventsItemPrev->Events;
}

// TEventsList /////////////////////////////////////////////////////////////////

//
TEventsList::TEventsList(TEvents &EventsDefault)
{
  list.InsertBot(new TEventsItem(EventsDefault,*this),true);
}

//
void TEventsList::Link(TEvents &V)
{
  list.InsertBot(new TEventsItem(V,*this),true);
}

//
void TEventsList::Unlink(TEvents &V)
{
  TEventsItem *P = Search(V); if (P) { list.Delete(P);}
}

//
TEvents &TEventsList::GetBot()
{
  return ((TEventsItem*)list.GetBot())->Events;
  //EventsItem->Events.eventsItem = EventsItem;
  //return EventsItem->Events;
}

//
TEventsItem *TEventsList::Search(TEvents &V)
{
  TEventsItem *P = (TEventsItem*)list.GetBot(); while (P)
  {
    if (&P->Events == &V) { return P;}
    P = (TEventsItem*)P->GetPrev();
  }
  return NULL;
}
